package leetcode.string;

/**
 * @author Cheng Jun
 * Description: 给你两个二进制字符串，返回它们的和（用二进制表示）。
 * <p>
 * 输入为 非空 字符串且只包含数字 1 和 0。
 * <p>
 * 提示：
 * <p>
 * 每个字符串仅由字符 '0' 或 '1' 组成。
 * 1 <= a.length, b.length <= 10^4
 * 字符串如果不是 "0" ，就都不含前导零。
 * <p>
 * 链接：https://leetcode.cn/problems/add-binary
 * @version 1.0
 * @date 2022/8/6 14:35
 */
public class addBinary {

    public static void main(String[] args) {
        System.out.println(addBinary("11", "1"));
    }
    private static String addBinary(String a, String b) {
        int indexA = a.length() - 1;
        int indexB = b.length() - 1;
        StringBuilder sb = new StringBuilder("");
        int jin1 = 0;
        while (jin1 != 0 || 0 <= indexA || 0 <= indexB) {
            if (0 <= indexA) jin1 += a.charAt(indexA--) - '0';
            if (0 <= indexB) jin1 += b.charAt(indexB--) - '0';
            sb.append(jin1 % 2);
            jin1 /= 2;
        }
        // 因为是从低位开始运算的，所以要反转字符串
        return sb.reverse().toString();
    }
}
